[INFO] cloning repository https://github.com/tdewantha/sniper5
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tdewantha/sniper5" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftdewantha%2Fsniper5", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftdewantha%2Fsniper5'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 6930c277360c5eaf75ed3ad524720fb877524baa
[INFO] testing tdewantha/sniper5 against try#28f95933dc0727396c07b48d0a8cb5211b7fb472 for pr-154065-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftdewantha%2Fsniper5" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-2-tc2/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/tdewantha/sniper5
[INFO] finished tweaking git repo https://github.com/tdewantha/sniper5
[INFO] tweaked toml for git repo https://github.com/tdewantha/sniper5 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tdewantha/sniper5 on toolchain 28f95933dc0727396c07b48d0a8cb5211b7fb472
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tdewantha/sniper5 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 91bacf535e402378d1c2a51d12df109ff5f0225f285199c3d801419d9ebc58ea
[INFO] running `Command { std: "docker" "start" "-a" "91bacf535e402378d1c2a51d12df109ff5f0225f285199c3d801419d9ebc58ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "91bacf535e402378d1c2a51d12df109ff5f0225f285199c3d801419d9ebc58ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "91bacf535e402378d1c2a51d12df109ff5f0225f285199c3d801419d9ebc58ea", kill_on_drop: false }`
[INFO] [stdout] 91bacf535e402378d1c2a51d12df109ff5f0225f285199c3d801419d9ebc58ea
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8e5ce2e1d75e9ada5e47c9082f95b7363ed3a9a7453ff828fd26e4f3f2524a80
[INFO] running `Command { std: "docker" "start" "-a" "8e5ce2e1d75e9ada5e47c9082f95b7363ed3a9a7453ff828fd26e4f3f2524a80", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.2.61
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling http v0.2.12
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling idna v0.4.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling axum-core v0.3.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling data-encoding v2.11.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling axum v0.6.20
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling http-range-header v0.3.1
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling matchit v0.7.3
[INFO] [stderr]    Compiling idna v0.3.0
[INFO] [stderr]    Compiling bs58 v0.5.1
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling uuid v1.23.1
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling url v2.4.1
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling http-body v0.4.6
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling pin-project-internal v1.1.12
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling axum-macros v0.3.8
[INFO] [stderr]    Compiling tokio v1.52.2
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling pin-project v1.1.12
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling rustls-webpki v0.101.7
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tungstenite v0.20.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling tower-http v0.4.4
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-rustls v0.24.1
[INFO] [stderr]    Compiling tower v0.4.13
[INFO] [stderr]    Compiling tokio-tungstenite v0.20.1
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling hyper-rustls v0.24.2
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling sniperbot2 v2.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `anyhow`
[INFO] [stdout]  --> src/db.rs:4:14
[INFO] [stdout]   |
[INFO] [stdout] 4 | use anyhow::{anyhow, Result};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/executor.rs:12:21
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/gmgn.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{debug, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AppState` and `Position`
[INFO] [stdout]  --> src/monitor.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::state::{AppState, Position, PositionStatus, SharedState, StateTx, WatchStatus};
[INFO] [stdout]   |                    ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EntryMode`
[INFO] [stdout]  --> src/scanner.rs:9:23
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::strategy::{EntryMode, Strategy, StrategyId};
[INFO] [stdout]   |                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/signal_client.rs:14:21
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DbPool`
[INFO] [stdout]  --> src/telegram.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::db::{self, DbPool};
[INFO] [stdout]   |                       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/wallets.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `db::DbPool`
[INFO] [stdout]   --> src/main.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use db::DbPool;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `amount_sol`
[INFO] [stdout]    --> src/monitor.rs:176:24
[INFO] [stdout]     |
[INFO] [stdout] 176 |         entry_mc: f64, amount_sol: f64, pnl_pct: f64,
[INFO] [stdout]     |                        ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_amount_sol`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pnl_pct`
[INFO] [stdout]    --> src/monitor.rs:176:41
[INFO] [stdout]     |
[INFO] [stdout] 176 |         entry_mc: f64, amount_sol: f64, pnl_pct: f64,
[INFO] [stdout]     |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pnl_pct`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_mc`
[INFO] [stdout]    --> src/monitor.rs:220:38
[INFO] [stdout]     |
[INFO] [stdout] 220 |             ExitSignal::TrailingTp { current_mc, peak_mc, trail_pct } => {
[INFO] [stdout]     |                                      ^^^^^^^^^^ help: try ignoring the field: `current_mc: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base_url` and `model` are never read
[INFO] [stdout]   --> src/config.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct LlmConfig {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub base_url: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 38 |     #[serde(default = "default_llm_model")]
[INFO] [stdout] 39 |     pub model: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LlmConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `platform` is never read
[INFO] [stdout]   --> src/config.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct ScannerConfig {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 64 |     pub poll_interval_ms: u64,
[INFO] [stdout] 65 |     pub platform: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScannerConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `optimal_mc_usd` is never read
[INFO] [stdout]   --> src/config.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct EntryFilter {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 80 |     pub floor_mc_usd: f64,
[INFO] [stdout] 81 |     pub optimal_mc_usd: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EntryFilter` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `comment` is never read
[INFO] [stdout]    --> src/config.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub struct FeeFilter {
[INFO] [stdout]     |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub comment: String,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FeeFilter` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `require_no_burn_blacklist` and `require_renounced` are never read
[INFO] [stdout]    --> src/config.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct TokenFilters {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub require_no_burn_blacklist: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub require_renounced: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TokenFilters` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_setting` is never used
[INFO] [stdout]    --> src/db.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn get_setting(db: &DbPool, key: &str, default: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_setting` is never used
[INFO] [stdout]    --> src/db.rs:173:8
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub fn set_setting(db: &DbPool, key: &str, value: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_setting_f64` is never used
[INFO] [stdout]    --> src/db.rs:182:8
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub fn get_setting_f64(db: &DbPool, key: &str, default: f64) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_setting_bool` is never used
[INFO] [stdout]    --> src/db.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn get_setting_bool(db: &DbPool, key: &str, default: bool) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_setting_usize` is never used
[INFO] [stdout]    --> src/db.rs:191:8
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub fn get_setting_usize(db: &DbPool, key: &str, default: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upsert_candidate` is never used
[INFO] [stdout]    --> src/db.rs:223:8
[INFO] [stdout]     |
[INFO] [stdout] 223 | pub fn upsert_candidate(db: &DbPool, mint: &str, symbol: &str, sources: &[String], payload: &Value) -> Result<i64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_decision` is never used
[INFO] [stdout]    --> src/db.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn store_decision(db: &DbPool, candidate_id: i64, mint: &str, verdict: &str, confidence: f64, reason: &str) -> Result<i64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_position_open` is never used
[INFO] [stdout]    --> src/db.rs:254:8
[INFO] [stdout]     |
[INFO] [stdout] 254 | pub fn store_position_open(db: &DbPool, pos: &PositionRow) -> Result<i64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_position_db` is never used
[INFO] [stdout]    --> src/db.rs:270:8
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub fn close_position_db(db: &DbPool, id: i64, exit_mcap: f64, exit_price: f64, reason: &str, pnl_pct: f64, pnl_sol: f64) -> Result...
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_open_positions_db` is never used
[INFO] [stdout]    --> src/db.rs:280:8
[INFO] [stdout]     |
[INFO] [stdout] 280 | pub fn get_open_positions_db(db: &DbPool) -> Vec<Value> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_open_positions` is never used
[INFO] [stdout]    --> src/db.rs:326:8
[INFO] [stdout]     |
[INFO] [stdout] 326 | pub fn count_open_positions(db: &DbPool) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_signal_event` is never used
[INFO] [stdout]    --> src/db.rs:369:8
[INFO] [stdout]     |
[INFO] [stdout] 369 | pub fn log_signal_event(db: &DbPool, mint: &str, kind: &str, source: &str, payload: &Value) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PositionRow` is never constructed
[INFO] [stdout]    --> src/db.rs:388:12
[INFO] [stdout]     |
[INFO] [stdout] 388 | pub struct PositionRow {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `wallet_privkey_b58` is never read
[INFO] [stdout]   --> src/executor.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Executor {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |     wallet_privkey_b58: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/exit_manager.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ExitManager {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn new(rules: ExitRules) -> Self { Self { rules } }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RawPair` is never constructed
[INFO] [stdout]   --> src/gmgn.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct RawPair {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total_fees_sol` is never read
[INFO] [stdout]   --> src/gmgn.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct PriceSnapshot {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub total_fees_sol: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PriceSnapshot` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `risks`, `suggested_tp_percent`, and `suggested_sl_percent` are never read
[INFO] [stdout]   --> src/llm.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct LlmDecision {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub risks: Vec<String>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 43 |     pub suggested_tp_percent: Option<f64>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |     pub suggested_sl_percent: Option<f64>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LlmDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `signature` is never read
[INFO] [stdout]   --> src/signal_client.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct FeeClaimData {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub signature: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FeeClaimData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `market_cap` is never read
[INFO] [stdout]   --> src/signal_client.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct GraduatedData {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub market_cap: Option<f64>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GraduatedData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `buys`, `sells`, and `volume` are never read
[INFO] [stdout]   --> src/signal_client.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct TrendingData {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 35 |     pub buys: Option<u32>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 36 |     pub sells: Option<u32>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub volume: Option<f64>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TrendingData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_graduated` and `has_trending` are never used
[INFO] [stdout]   --> src/signal_client.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | impl MemeSignal {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 69 |     pub fn has_fee_claim(&self) -> bool { self.fee_claim.is_some() }
[INFO] [stdout] 70 |     pub fn has_graduated(&self) -> bool { self.graduated.is_some() }
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 71 |     pub fn has_trending(&self)  -> bool { self.trending.is_some() }
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `min_fee_claim_sol`, `trending_min_volume_usd`, and `trending_min_swaps` are never read
[INFO] [stdout]   --> src/strategy.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct Strategy {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub min_fee_claim_sol: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub trending_min_volume_usd: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub trending_min_swaps: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Strategy` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_html` is never used
[INFO] [stdout]   --> src/telegram.rs:47:18
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl TelegramBot {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub async fn send_html(&self, text: &str) {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message_id` is never read
[INFO] [stdout]    --> src/telegram.rs:159:30
[INFO] [stdout]     |
[INFO] [stdout] 159 |     Command  { text: String, message_id: i64 },
[INFO] [stdout]     |     -------                  ^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TelegramUpdate` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/trending.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct TrendingToken {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 25 |     pub mint: String,
[INFO] [stdout] 26 |     pub symbol: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 27 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 28 |     pub price_usd: f64,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 29 |     pub market_cap_usd: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     pub liquidity_usd: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub volume_5m_usd: f64,
[INFO] [stdout] 32 |     pub holders: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 33 |     pub swaps_5m: u32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub rank: u32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TrendingToken` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `db` is never read
[INFO] [stdout]   --> src/wallets.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct WalletEnrichment {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 12 |     http: Client,
[INFO] [stdout] 13 |     db:   DbPool,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `check_holder_exposure` and `fetch_all_pnl` are never used
[INFO] [stdout]   --> src/wallets.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl WalletEnrichment {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn check_holder_exposure(&self, holders: &[String]) -> HolderExposure {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub async fn fetch_all_pnl(&self) -> Vec<(String, String, Option<WalletPnl>)> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HolderExposure` is never constructed
[INFO] [stdout]   --> src/wallets.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct HolderExposure {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `total_trades` and `wins` are never read
[INFO] [stdout]   --> src/wallets.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct WalletPnl {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 89 |     pub total_trades:  u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 90 |     pub wins:          u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WalletPnl` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `losses` is never used
[INFO] [stdout]   --> src/wallets.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | impl WalletPnl {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 96 |     pub fn losses(&self) -> u64 { self.total_trades.saturating_sub(self.wins) }
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `len`, `is_empty`, and `watching_count` are never used
[INFO] [stdout]   --> src/watchlist.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Watchlist {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn len(&self) -> usize { self.tokens.len() }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 82 |     pub fn is_empty(&self) -> bool { self.tokens.is_empty() }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 83 |     pub fn watching_count(&self) -> usize { self.get_watching().len() }
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 03s
[INFO] running `Command { std: "docker" "inspect" "8e5ce2e1d75e9ada5e47c9082f95b7363ed3a9a7453ff828fd26e4f3f2524a80", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8e5ce2e1d75e9ada5e47c9082f95b7363ed3a9a7453ff828fd26e4f3f2524a80", kill_on_drop: false }`
[INFO] [stdout] 8e5ce2e1d75e9ada5e47c9082f95b7363ed3a9a7453ff828fd26e4f3f2524a80
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 967169943c6da3f990b3fc1f295b28056d68e6015202b69330cca788d1996916
[INFO] running `Command { std: "docker" "start" "-a" "967169943c6da3f990b3fc1f295b28056d68e6015202b69330cca788d1996916", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.52.2
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-rustls v0.24.1
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling tokio-tungstenite v0.20.1
[INFO] [stderr]    Compiling tower v0.4.13
[INFO] [stderr]    Compiling tokio-test v0.4.5
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling hyper-rustls v0.24.2
[INFO] [stderr]    Compiling axum v0.6.20
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling sniperbot2 v2.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `anyhow`
[INFO] [stdout]  --> src/db.rs:4:14
[INFO] [stdout]   |
[INFO] [stdout] 4 | use anyhow::{anyhow, Result};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/executor.rs:12:21
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/gmgn.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{debug, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AppState` and `Position`
[INFO] [stdout]  --> src/monitor.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::state::{AppState, Position, PositionStatus, SharedState, StateTx, WatchStatus};
[INFO] [stdout]   |                    ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EntryMode`
[INFO] [stdout]  --> src/scanner.rs:9:23
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::strategy::{EntryMode, Strategy, StrategyId};
[INFO] [stdout]   |                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::*`
[INFO] [stdout]    --> src/screener.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     use crate::config::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/signal_client.rs:14:21
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DbPool`
[INFO] [stdout]  --> src/telegram.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::db::{self, DbPool};
[INFO] [stdout]   |                       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/wallets.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `db::DbPool`
[INFO] [stdout]   --> src/main.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use db::DbPool;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `amount_sol`
[INFO] [stdout]    --> src/monitor.rs:176:24
[INFO] [stdout]     |
[INFO] [stdout] 176 |         entry_mc: f64, amount_sol: f64, pnl_pct: f64,
[INFO] [stdout]     |                        ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_amount_sol`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pnl_pct`
[INFO] [stdout]    --> src/monitor.rs:176:41
[INFO] [stdout]     |
[INFO] [stdout] 176 |         entry_mc: f64, amount_sol: f64, pnl_pct: f64,
[INFO] [stdout]     |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pnl_pct`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_mc`
[INFO] [stdout]    --> src/monitor.rs:220:38
[INFO] [stdout]     |
[INFO] [stdout] 220 |             ExitSignal::TrailingTp { current_mc, peak_mc, trail_pct } => {
[INFO] [stdout]     |                                      ^^^^^^^^^^ help: try ignoring the field: `current_mc: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base_url` and `model` are never read
[INFO] [stdout]   --> src/config.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct LlmConfig {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub base_url: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 38 |     #[serde(default = "default_llm_model")]
[INFO] [stdout] 39 |     pub model: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LlmConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `platform` is never read
[INFO] [stdout]   --> src/config.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct ScannerConfig {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 64 |     pub poll_interval_ms: u64,
[INFO] [stdout] 65 |     pub platform: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScannerConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `optimal_mc_usd` is never read
[INFO] [stdout]   --> src/config.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct EntryFilter {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 80 |     pub floor_mc_usd: f64,
[INFO] [stdout] 81 |     pub optimal_mc_usd: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EntryFilter` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `comment` is never read
[INFO] [stdout]    --> src/config.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub struct FeeFilter {
[INFO] [stdout]     |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub comment: String,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FeeFilter` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `require_no_burn_blacklist` and `require_renounced` are never read
[INFO] [stdout]    --> src/config.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct TokenFilters {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub require_no_burn_blacklist: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub require_renounced: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TokenFilters` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_setting` is never used
[INFO] [stdout]    --> src/db.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn get_setting(db: &DbPool, key: &str, default: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_setting` is never used
[INFO] [stdout]    --> src/db.rs:173:8
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub fn set_setting(db: &DbPool, key: &str, value: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_setting_f64` is never used
[INFO] [stdout]    --> src/db.rs:182:8
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub fn get_setting_f64(db: &DbPool, key: &str, default: f64) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_setting_bool` is never used
[INFO] [stdout]    --> src/db.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn get_setting_bool(db: &DbPool, key: &str, default: bool) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_setting_usize` is never used
[INFO] [stdout]    --> src/db.rs:191:8
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub fn get_setting_usize(db: &DbPool, key: &str, default: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upsert_candidate` is never used
[INFO] [stdout]    --> src/db.rs:223:8
[INFO] [stdout]     |
[INFO] [stdout] 223 | pub fn upsert_candidate(db: &DbPool, mint: &str, symbol: &str, sources: &[String], payload: &Value) -> Result<i64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_decision` is never used
[INFO] [stdout]    --> src/db.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn store_decision(db: &DbPool, candidate_id: i64, mint: &str, verdict: &str, confidence: f64, reason: &str) -> Result<i64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_position_open` is never used
[INFO] [stdout]    --> src/db.rs:254:8
[INFO] [stdout]     |
[INFO] [stdout] 254 | pub fn store_position_open(db: &DbPool, pos: &PositionRow) -> Result<i64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_position_db` is never used
[INFO] [stdout]    --> src/db.rs:270:8
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub fn close_position_db(db: &DbPool, id: i64, exit_mcap: f64, exit_price: f64, reason: &str, pnl_pct: f64, pnl_sol: f64) -> Result...
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_open_positions_db` is never used
[INFO] [stdout]    --> src/db.rs:280:8
[INFO] [stdout]     |
[INFO] [stdout] 280 | pub fn get_open_positions_db(db: &DbPool) -> Vec<Value> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_open_positions` is never used
[INFO] [stdout]    --> src/db.rs:326:8
[INFO] [stdout]     |
[INFO] [stdout] 326 | pub fn count_open_positions(db: &DbPool) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_signal_event` is never used
[INFO] [stdout]    --> src/db.rs:369:8
[INFO] [stdout]     |
[INFO] [stdout] 369 | pub fn log_signal_event(db: &DbPool, mint: &str, kind: &str, source: &str, payload: &Value) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PositionRow` is never constructed
[INFO] [stdout]    --> src/db.rs:388:12
[INFO] [stdout]     |
[INFO] [stdout] 388 | pub struct PositionRow {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `wallet_privkey_b58` is never read
[INFO] [stdout]   --> src/executor.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Executor {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |     wallet_privkey_b58: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RawPair` is never constructed
[INFO] [stdout]   --> src/gmgn.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct RawPair {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total_fees_sol` is never read
[INFO] [stdout]   --> src/gmgn.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct PriceSnapshot {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub total_fees_sol: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PriceSnapshot` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `risks`, `suggested_tp_percent`, and `suggested_sl_percent` are never read
[INFO] [stdout]   --> src/llm.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct LlmDecision {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub risks: Vec<String>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 43 |     pub suggested_tp_percent: Option<f64>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |     pub suggested_sl_percent: Option<f64>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LlmDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `signature` is never read
[INFO] [stdout]   --> src/signal_client.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct FeeClaimData {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub signature: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FeeClaimData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `market_cap` is never read
[INFO] [stdout]   --> src/signal_client.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct GraduatedData {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub market_cap: Option<f64>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GraduatedData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `buys`, `sells`, and `volume` are never read
[INFO] [stdout]   --> src/signal_client.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct TrendingData {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 35 |     pub buys: Option<u32>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 36 |     pub sells: Option<u32>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub volume: Option<f64>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TrendingData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_graduated` and `has_trending` are never used
[INFO] [stdout]   --> src/signal_client.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | impl MemeSignal {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 69 |     pub fn has_fee_claim(&self) -> bool { self.fee_claim.is_some() }
[INFO] [stdout] 70 |     pub fn has_graduated(&self) -> bool { self.graduated.is_some() }
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 71 |     pub fn has_trending(&self)  -> bool { self.trending.is_some() }
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `min_fee_claim_sol`, `trending_min_volume_usd`, and `trending_min_swaps` are never read
[INFO] [stdout]   --> src/strategy.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct Strategy {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub min_fee_claim_sol: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub trending_min_volume_usd: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub trending_min_swaps: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Strategy` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_html` is never used
[INFO] [stdout]   --> src/telegram.rs:47:18
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl TelegramBot {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub async fn send_html(&self, text: &str) {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message_id` is never read
[INFO] [stdout]    --> src/telegram.rs:159:30
[INFO] [stdout]     |
[INFO] [stdout] 159 |     Command  { text: String, message_id: i64 },
[INFO] [stdout]     |     -------                  ^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TelegramUpdate` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/trending.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct TrendingToken {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 25 |     pub mint: String,
[INFO] [stdout] 26 |     pub symbol: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 27 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 28 |     pub price_usd: f64,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 29 |     pub market_cap_usd: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     pub liquidity_usd: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub volume_5m_usd: f64,
[INFO] [stdout] 32 |     pub holders: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 33 |     pub swaps_5m: u32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub rank: u32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TrendingToken` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `db` is never read
[INFO] [stdout]   --> src/wallets.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct WalletEnrichment {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 12 |     http: Client,
[INFO] [stdout] 13 |     db:   DbPool,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `check_holder_exposure` and `fetch_all_pnl` are never used
[INFO] [stdout]   --> src/wallets.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl WalletEnrichment {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn check_holder_exposure(&self, holders: &[String]) -> HolderExposure {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub async fn fetch_all_pnl(&self) -> Vec<(String, String, Option<WalletPnl>)> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HolderExposure` is never constructed
[INFO] [stdout]   --> src/wallets.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct HolderExposure {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `total_trades` and `wins` are never read
[INFO] [stdout]   --> src/wallets.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct WalletPnl {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 89 |     pub total_trades:  u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 90 |     pub wins:          u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WalletPnl` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `losses` is never used
[INFO] [stdout]   --> src/wallets.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | impl WalletPnl {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 96 |     pub fn losses(&self) -> u64 { self.total_trades.saturating_sub(self.wins) }
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_empty` and `watching_count` are never used
[INFO] [stdout]   --> src/watchlist.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Watchlist {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn is_empty(&self) -> bool { self.tokens.is_empty() }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 83 |     pub fn watching_count(&self) -> usize { self.get_watching().len() }
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 33.28s
[INFO] running `Command { std: "docker" "inspect" "967169943c6da3f990b3fc1f295b28056d68e6015202b69330cca788d1996916", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "967169943c6da3f990b3fc1f295b28056d68e6015202b69330cca788d1996916", kill_on_drop: false }`
[INFO] [stdout] 967169943c6da3f990b3fc1f295b28056d68e6015202b69330cca788d1996916
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 514f93747039b1a11bd14d603bace6edc3ddd12c4b1c51c45e40ccc1ea74fa5f
[INFO] running `Command { std: "docker" "start" "-a" "514f93747039b1a11bd14d603bace6edc3ddd12c4b1c51c45e40ccc1ea74fa5f", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `anyhow`
[INFO] [stderr]  --> src/db.rs:4:14
[INFO] [stderr]   |
[INFO] [stderr] 4 | use anyhow::{anyhow, Result};
[INFO] [stderr]   |              ^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `warn`
[INFO] [stderr]   --> src/executor.rs:12:21
[INFO] [stderr]    |
[INFO] [stderr] 12 | use tracing::{info, warn};
[INFO] [stderr]    |                     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `debug`
[INFO] [stderr]  --> src/gmgn.rs:7:15
[INFO] [stderr]   |
[INFO] [stderr] 7 | use tracing::{debug, warn};
[INFO] [stderr]   |               ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AppState` and `Position`
[INFO] [stderr]  --> src/monitor.rs:7:20
[INFO] [stderr]   |
[INFO] [stderr] 7 | use crate::state::{AppState, Position, PositionStatus, SharedState, StateTx, WatchStatus};
[INFO] [stderr]   |                    ^^^^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `EntryMode`
[INFO] [stderr]  --> src/scanner.rs:9:23
[INFO] [stderr]   |
[INFO] [stderr] 9 | use crate::strategy::{EntryMode, Strategy, StrategyId};
[INFO] [stderr]   |                       ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::config::*`
[INFO] [stderr]    --> src/screener.rs:117:9
[INFO] [stderr]     |
[INFO] [stderr] 117 |     use crate::config::*;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `warn`
[INFO] [stderr]   --> src/signal_client.rs:14:21
[INFO] [stderr]    |
[INFO] [stderr] 14 | use tracing::{info, warn};
[INFO] [stderr]    |                     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `DbPool`
[INFO] [stderr]  --> src/telegram.rs:4:23
[INFO] [stderr]   |
[INFO] [stderr] 4 | use crate::db::{self, DbPool};
[INFO] [stderr]   |                       ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `anyhow::Result`
[INFO] [stderr]  --> src/wallets.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use anyhow::Result;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `db::DbPool`
[INFO] [stderr]   --> src/main.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | use db::DbPool;
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `amount_sol`
[INFO] [stderr]    --> src/monitor.rs:176:24
[INFO] [stderr]     |
[INFO] [stderr] 176 |         entry_mc: f64, amount_sol: f64, pnl_pct: f64,
[INFO] [stderr]     |                        ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_amount_sol`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pnl_pct`
[INFO] [stderr]    --> src/monitor.rs:176:41
[INFO] [stderr]     |
[INFO] [stderr] 176 |         entry_mc: f64, amount_sol: f64, pnl_pct: f64,
[INFO] [stderr]     |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pnl_pct`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `current_mc`
[INFO] [stderr]    --> src/monitor.rs:220:38
[INFO] [stderr]     |
[INFO] [stderr] 220 |             ExitSignal::TrailingTp { current_mc, peak_mc, trail_pct } => {
[INFO] [stderr]     |                                      ^^^^^^^^^^ help: try ignoring the field: `current_mc: _`
[INFO] [stderr] 
[INFO] [stderr] warning: fields `base_url` and `model` are never read
[INFO] [stderr]   --> src/config.rs:37:9
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub struct LlmConfig {
[INFO] [stderr]    |            --------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 37 |     pub base_url: String,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 38 |     #[serde(default = "default_llm_model")]
[INFO] [stderr] 39 |     pub model: String,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `LlmConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `platform` is never read
[INFO] [stderr]   --> src/config.rs:65:9
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub struct ScannerConfig {
[INFO] [stderr]    |            ------------- field in this struct
[INFO] [stderr] 64 |     pub poll_interval_ms: u64,
[INFO] [stderr] 65 |     pub platform: String,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ScannerConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `optimal_mc_usd` is never read
[INFO] [stderr]   --> src/config.rs:81:9
[INFO] [stderr]    |
[INFO] [stderr] 79 | pub struct EntryFilter {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] 80 |     pub floor_mc_usd: f64,
[INFO] [stderr] 81 |     pub optimal_mc_usd: f64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `EntryFilter` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `comment` is never read
[INFO] [stderr]    --> src/config.rs:105:9
[INFO] [stderr]     |
[INFO] [stderr] 102 | pub struct FeeFilter {
[INFO] [stderr]     |            --------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 105 |     pub comment: String,
[INFO] [stderr]     |         ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `FeeFilter` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `require_no_burn_blacklist` and `require_renounced` are never read
[INFO] [stderr]    --> src/config.rs:114:9
[INFO] [stderr]     |
[INFO] [stderr] 110 | pub struct TokenFilters {
[INFO] [stderr]     |            ------------ fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 114 |     pub require_no_burn_blacklist: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 118 |     pub require_renounced: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `TokenFilters` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_setting` is never used
[INFO] [stderr]    --> src/db.rs:164:8
[INFO] [stderr]     |
[INFO] [stderr] 164 | pub fn get_setting(db: &DbPool, key: &str, default: &str) -> String {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `set_setting` is never used
[INFO] [stderr]    --> src/db.rs:173:8
[INFO] [stderr]     |
[INFO] [stderr] 173 | pub fn set_setting(db: &DbPool, key: &str, value: &str) {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_setting_f64` is never used
[INFO] [stderr]    --> src/db.rs:182:8
[INFO] [stderr]     |
[INFO] [stderr] 182 | pub fn get_setting_f64(db: &DbPool, key: &str, default: f64) -> f64 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_setting_bool` is never used
[INFO] [stderr]    --> src/db.rs:186:8
[INFO] [stderr]     |
[INFO] [stderr] 186 | pub fn get_setting_bool(db: &DbPool, key: &str, default: bool) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_setting_usize` is never used
[INFO] [stderr]    --> src/db.rs:191:8
[INFO] [stderr]     |
[INFO] [stderr] 191 | pub fn get_setting_usize(db: &DbPool, key: &str, default: usize) -> usize {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `upsert_candidate` is never used
[INFO] [stderr]    --> src/db.rs:223:8
[INFO] [stderr]     |
[INFO] [stderr] 223 | pub fn upsert_candidate(db: &DbPool, mint: &str, symbol: &str, sources: &[String], payload: &Value) -> Result<i64> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `store_decision` is never used
[INFO] [stderr]    --> src/db.rs:242:8
[INFO] [stderr]     |
[INFO] [stderr] 242 | pub fn store_decision(db: &DbPool, candidate_id: i64, mint: &str, verdict: &str, confidence: f64, reason: &str) -> Result<i64> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `store_position_open` is never used
[INFO] [stderr]    --> src/db.rs:254:8
[INFO] [stderr]     |
[INFO] [stderr] 254 | pub fn store_position_open(db: &DbPool, pos: &PositionRow) -> Result<i64> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `close_position_db` is never used
[INFO] [stderr]    --> src/db.rs:270:8
[INFO] [stderr]     |
[INFO] [stderr] 270 | pub fn close_position_db(db: &DbPool, id: i64, exit_mcap: f64, exit_price: f64, reason: &str, pnl_pct: f64, pnl_sol: f64) -> Result...
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_open_positions_db` is never used
[INFO] [stderr]    --> src/db.rs:280:8
[INFO] [stderr]     |
[INFO] [stderr] 280 | pub fn get_open_positions_db(db: &DbPool) -> Vec<Value> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `count_open_positions` is never used
[INFO] [stderr]    --> src/db.rs:326:8
[INFO] [stderr]     |
[INFO] [stderr] 326 | pub fn count_open_positions(db: &DbPool) -> usize {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `log_signal_event` is never used
[INFO] [stderr]    --> src/db.rs:369:8
[INFO] [stderr]     |
[INFO] [stderr] 369 | pub fn log_signal_event(db: &DbPool, mint: &str, kind: &str, source: &str, payload: &Value) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PositionRow` is never constructed
[INFO] [stderr]    --> src/db.rs:388:12
[INFO] [stderr]     |
[INFO] [stderr] 388 | pub struct PositionRow {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `wallet_privkey_b58` is never read
[INFO] [stderr]   --> src/executor.rs:31:5
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub struct Executor {
[INFO] [stderr]    |            -------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 31 |     wallet_privkey_b58: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RawPair` is never constructed
[INFO] [stderr]   --> src/gmgn.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub struct RawPair {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `total_fees_sol` is never read
[INFO] [stderr]   --> src/gmgn.rs:59:9
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub struct PriceSnapshot {
[INFO] [stderr]    |            ------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 59 |     pub total_fees_sol: f64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PriceSnapshot` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `risks`, `suggested_tp_percent`, and `suggested_sl_percent` are never read
[INFO] [stderr]   --> src/llm.rs:42:9
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub struct LlmDecision {
[INFO] [stderr]    |            ----------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 42 |     pub risks: Vec<String>,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 43 |     pub suggested_tp_percent: Option<f64>,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 44 |     pub suggested_sl_percent: Option<f64>,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `LlmDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `signature` is never read
[INFO] [stderr]   --> src/signal_client.rs:22:9
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct FeeClaimData {
[INFO] [stderr]    |            ------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 22 |     pub signature: Option<String>,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `FeeClaimData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `market_cap` is never read
[INFO] [stderr]   --> src/signal_client.rs:30:9
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub struct GraduatedData {
[INFO] [stderr]    |            ------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 30 |     pub market_cap: Option<f64>,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `GraduatedData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `buys`, `sells`, and `volume` are never read
[INFO] [stderr]   --> src/signal_client.rs:35:9
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub struct TrendingData {
[INFO] [stderr]    |            ------------ fields in this struct
[INFO] [stderr] 35 |     pub buys: Option<u32>,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 36 |     pub sells: Option<u32>,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 39 |     pub volume: Option<f64>,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TrendingData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `has_graduated` and `has_trending` are never used
[INFO] [stderr]   --> src/signal_client.rs:70:12
[INFO] [stderr]    |
[INFO] [stderr] 68 | impl MemeSignal {
[INFO] [stderr]    | --------------- methods in this implementation
[INFO] [stderr] 69 |     pub fn has_fee_claim(&self) -> bool { self.fee_claim.is_some() }
[INFO] [stderr] 70 |     pub fn has_graduated(&self) -> bool { self.graduated.is_some() }
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 71 |     pub fn has_trending(&self)  -> bool { self.trending.is_some() }
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `min_fee_claim_sol`, `trending_min_volume_usd`, and `trending_min_swaps` are never read
[INFO] [stderr]   --> src/strategy.rs:51:9
[INFO] [stderr]    |
[INFO] [stderr] 46 | pub struct Strategy {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 51 |     pub min_fee_claim_sol: f64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 66 |     pub trending_min_volume_usd: f64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 67 |     pub trending_min_swaps: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Strategy` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `send_html` is never used
[INFO] [stderr]   --> src/telegram.rs:47:18
[INFO] [stderr]    |
[INFO] [stderr] 22 | impl TelegramBot {
[INFO] [stderr]    | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 47 |     pub async fn send_html(&self, text: &str) {
[INFO] [stderr]    |                  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `message_id` is never read
[INFO] [stderr]    --> src/telegram.rs:159:30
[INFO] [stderr]     |
[INFO] [stderr] 159 |     Command  { text: String, message_id: i64 },
[INFO] [stderr]     |     -------                  ^^^^^^^^^^
[INFO] [stderr]     |     |
[INFO] [stderr]     |     field in this variant
[INFO] [stderr]     |
[INFO] [stderr]     = note: `TelegramUpdate` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> src/trending.rs:26:9
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub struct TrendingToken {
[INFO] [stderr]    |            ------------- fields in this struct
[INFO] [stderr] 25 |     pub mint: String,
[INFO] [stderr] 26 |     pub symbol: String,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr] 27 |     pub name: String,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 28 |     pub price_usd: f64,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 29 |     pub market_cap_usd: f64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr] 30 |     pub liquidity_usd: f64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^
[INFO] [stderr] 31 |     pub volume_5m_usd: f64,
[INFO] [stderr] 32 |     pub holders: u32,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] 33 |     pub swaps_5m: u32,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 37 |     pub rank: u32,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TrendingToken` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `db` is never read
[INFO] [stderr]   --> src/wallets.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub struct WalletEnrichment {
[INFO] [stderr]    |            ---------------- field in this struct
[INFO] [stderr] 12 |     http: Client,
[INFO] [stderr] 13 |     db:   DbPool,
[INFO] [stderr]    |     ^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `check_holder_exposure` and `fetch_all_pnl` are never used
[INFO] [stderr]   --> src/wallets.rs:26:12
[INFO] [stderr]    |
[INFO] [stderr] 16 | impl WalletEnrichment {
[INFO] [stderr]    | --------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 26 |     pub fn check_holder_exposure(&self, holders: &[String]) -> HolderExposure {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 66 |     pub async fn fetch_all_pnl(&self) -> Vec<(String, String, Option<WalletPnl>)> {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HolderExposure` is never constructed
[INFO] [stderr]   --> src/wallets.rs:81:12
[INFO] [stderr]    |
[INFO] [stderr] 81 | pub struct HolderExposure {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `total_trades` and `wins` are never read
[INFO] [stderr]   --> src/wallets.rs:89:9
[INFO] [stderr]    |
[INFO] [stderr] 88 | pub struct WalletPnl {
[INFO] [stderr]    |            --------- fields in this struct
[INFO] [stderr] 89 |     pub total_trades:  u64,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 90 |     pub wins:          u64,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `WalletPnl` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `losses` is never used
[INFO] [stderr]   --> src/wallets.rs:96:12
[INFO] [stderr]    |
[INFO] [stderr] 95 | impl WalletPnl {
[INFO] [stderr]    | -------------- method in this implementation
[INFO] [stderr] 96 |     pub fn losses(&self) -> u64 { self.total_trades.saturating_sub(self.wins) }
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_empty` and `watching_count` are never used
[INFO] [stderr]   --> src/watchlist.rs:82:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | impl Watchlist {
[INFO] [stderr]    | -------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 82 |     pub fn is_empty(&self) -> bool { self.tokens.is_empty() }
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 83 |     pub fn watching_count(&self) -> usize { self.get_watching().len() }
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `sniperbot2` (bin "sniperbot2" test) generated 49 warnings (run `cargo fix --bin "sniperbot2" -p sniperbot2 --tests` to apply 13 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.36s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/sniperbot2-f607bab8987f358f)
[INFO] [stdout] 
[INFO] [stdout] running 32 tests
[INFO] [stdout] test exit_manager::tests::partial_tp_triggered ... ok
[INFO] [stdout] test exit_manager::tests::tp_triggered ... ok
[INFO] [stdout] test exit_manager::tests::trailing_tp_triggered ... ok
[INFO] [stdout] test screener::tests::bundler_35_passes ... ok
[INFO] [stdout] test screener::tests::bundler_35_1_fails ... ok
[INFO] [stdout] test screener::tests::burnt_lp_100_passes ... ok
[INFO] [stdout] test screener::tests::burnt_lp_79_fails ... ok
[INFO] [stdout] test screener::tests::bundler_36_6_fails ... ok
[INFO] [stdout] test screener::tests::burnt_lp_80_boundary_passes ... ok
[INFO] [stdout] test screener::tests::dev_hold_0_passes ... ok
[INFO] [stdout] test screener::tests::dev_hold_over_fails ... ok
[INFO] [stdout] test screener::tests::fee_filter_exact_boundary_passes ... ok
[INFO] [stdout] test screener::tests::dev_hold_1_boundary_passes ... ok
[INFO] [stdout] test screener::tests::fee_filter_passes_above_threshold ... ok
[INFO] [stdout] test screener::tests::fee_filter_rhinos_screenshot_fails ... ok
[INFO] [stdout] test screener::tests::fee_filter_just_below_boundary_fails ... ok
[INFO] [stdout] test screener::tests::screen_fee_low_rejected ... ok
[INFO] [stdout] test screener::tests::screen_fee_threshold_value_correct ... ok
[INFO] [stdout] test screener::tests::screen_mint_authority_rejected ... ok
[INFO] [stdout] test state::tests::position_pnl_calculation ... ok
[INFO] [stdout] test watchlist::tests::duplicate_not_added ... ok
[INFO] [stdout] test watchlist::tests::max_tokens_drops_oldest ... ok
[INFO] [stdout] test watchlist::tests::get_watching_filters_correctly ... ok
[INFO] [stdout] test watchlist::tests::add_token_succeeds ... ok
[INFO] [stdout] test watchlist::tests::update_status_works ... ok
[INFO] [stdout] test watchlist::tests::update_mc_works ... ok
[INFO] [stdout] test screener::tests::screen_bundler_high_rejected ... ok
[INFO] [stdout] test exit_manager::tests::sl_triggered ... ok
[INFO] [stdout] test screener::tests::screen_all_green_passes ... ok
[INFO] [stdout] test watchlist::tests::prune_terminal_tokens ... ok
[INFO] [stdout] test exit_manager::tests::max_hold_triggered ... ok
[INFO] [stdout] test config::tests::parses_config_correctly ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- config::tests::parses_config_correctly stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'config::tests::parses_config_correctly' (17) panicked at src/config.rs:193:9:
[INFO] [stdout] assertion failed: cfg.llm.enabled
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x575d7f7fe818 - std[d054f6f42beb1baa]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x575d7f7fe818 - std[d054f6f42beb1baa]::backtrace_rs::backtrace::trace_unsynchronized::<std[d054f6f42beb1baa]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x575d7f7fe818 - std[d054f6f42beb1baa]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x575d7f7fe818 - <<std[d054f6f42beb1baa]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[5a1c3e9896636f3a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x575d7f81368a - <core[5a1c3e9896636f3a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x575d7f81368a - core[5a1c3e9896636f3a]::fmt::write
[INFO] [stdout]    6:     0x575d7f803032 - std[d054f6f42beb1baa]::io::default_write_fmt::<alloc[154f689e5dd3bae5]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x575d7f803032 - <alloc[154f689e5dd3bae5]::vec::Vec<u8> as std[d054f6f42beb1baa]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x575d7f7dd846 - <std[d054f6f42beb1baa]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x575d7f7dd846 - std[d054f6f42beb1baa]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x575d7f7f6c39 - std[d054f6f42beb1baa]::panicking::default_hook
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x575d7f75b5cc - <alloc[154f689e5dd3bae5]::boxed::Box<dyn for<'a, 'b> core[5a1c3e9896636f3a]::ops::function::Fn<(&'a std[d054f6f42beb1baa]::panic::PanicHookInfo<'b>,), Output = ()> + core[5a1c3e9896636f3a]::marker::Send + core[5a1c3e9896636f3a]::marker::Sync> as core[5a1c3e9896636f3a]::ops::function::Fn<(&std[d054f6f42beb1baa]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x575d7f75b5cc - test[fad20673b750c10e]::test_main_inner::<test[fad20673b750c10e]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x575d7f7f6df2 - <alloc[154f689e5dd3bae5]::boxed::Box<dyn for<'a, 'b> core[5a1c3e9896636f3a]::ops::function::Fn<(&'a std[d054f6f42beb1baa]::panic::PanicHookInfo<'b>,), Output = ()> + core[5a1c3e9896636f3a]::marker::Send + core[5a1c3e9896636f3a]::marker::Sync> as core[5a1c3e9896636f3a]::ops::function::Fn<(&std[d054f6f42beb1baa]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x575d7f7f6df2 - std[d054f6f42beb1baa]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x575d7f7dd934 - std[d054f6f42beb1baa]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x575d7f7d5299 - std[d054f6f42beb1baa]::sys::backtrace::__rust_end_short_backtrace::<std[d054f6f42beb1baa]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x575d7f7de61d - __rustc[7ab284efd7f33ea8]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x575d7f813e7c - core[5a1c3e9896636f3a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x575d7f813e42 - core[5a1c3e9896636f3a]::panicking::panic
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x575d7f72bb55 - sniperbot2[2fa543728099b3c5]::config::tests::parses_config_correctly
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config.rs:193:9
[INFO] [stdout]   21:     0x575d7f72b4e7 - sniperbot2[2fa543728099b3c5]::config::tests::parses_config_correctly::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config.rs:188:33
[INFO] [stdout]   22:     0x575d7f73ac86 - <sniperbot2[2fa543728099b3c5]::config::tests::parses_config_correctly::{closure#0} as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x575d7f74e6ab - <fn() -> core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x575d7f74e6ab - test[fad20673b750c10e]::__rust_begin_short_backtrace::<core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>, fn() -> core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:724:18
[INFO] [stdout]   25:     0x575d7f75bf25 - test[fad20673b750c10e]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:747:74
[INFO] [stdout]   26:     0x575d7f75bf25 - <core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   27:     0x575d7f75bf25 - std[d054f6f42beb1baa]::panicking::catch_unwind::do_call::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>, core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x575d7f75bf25 - std[d054f6f42beb1baa]::panicking::catch_unwind::<core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>, core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x575d7f75bf25 - std[d054f6f42beb1baa]::panic::catch_unwind::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>, core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x575d7f75bf25 - test[fad20673b750c10e]::run_test_in_process
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:747:27
[INFO] [stdout]   31:     0x575d7f75bf25 - test[fad20673b750c10e]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:668:43
[INFO] [stdout]   32:     0x575d7f756a84 - test[fad20673b750c10e]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:698:41
[INFO] [stdout]   33:     0x575d7f756a84 - std[d054f6f42beb1baa]::sys::backtrace::__rust_begin_short_backtrace::<test[fad20673b750c10e]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x575d7f75efa2 - std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked::<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   35:     0x575d7f75efa2 - <core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   36:     0x575d7f75efa2 - std[d054f6f42beb1baa]::panicking::catch_unwind::do_call::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x575d7f75efa2 - std[d054f6f42beb1baa]::panicking::catch_unwind::<(), core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x575d7f75efa2 - std[d054f6f42beb1baa]::panic::catch_unwind::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x575d7f75efa2 - std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked::<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   40:     0x575d7f75efa2 - <std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1} as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x575d7f7fe14f - <alloc[154f689e5dd3bae5]::boxed::Box<dyn core[5a1c3e9896636f3a]::ops::function::FnOnce<(), Output = ()> + core[5a1c3e9896636f3a]::marker::Send> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   42:     0x575d7f7fe14f - <std[d054f6f42beb1baa]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   43:     0x7e8c03208aa4 - <unknown>
[INFO] [stdout]   44:     0x7e8c03295a64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     config::tests::parses_config_correctly
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 31 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin sniperbot2`
[INFO] running `Command { std: "docker" "inspect" "514f93747039b1a11bd14d603bace6edc3ddd12c4b1c51c45e40ccc1ea74fa5f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "514f93747039b1a11bd14d603bace6edc3ddd12c4b1c51c45e40ccc1ea74fa5f", kill_on_drop: false }`
[INFO] [stdout] 514f93747039b1a11bd14d603bace6edc3ddd12c4b1c51c45e40ccc1ea74fa5f
